#ifndef IMAPTASK_H
#define IMAPTASK_H
#include <QString>
#include<functional>
#include <QVariant>
#include "imapbasedata.h"
/**
 * Imap 命令的一个Task.
 * 一个Task需要经过3个线程
 * ImapTaskNetThread 处理网络请求得到res
 * ParseNetThread 解析回来的结果
 * 最终回到主线程交给ui显示.
 * @brief The ImapTask class
 */
class ImapTask
{
public:
    ImapTask(QString cmd,ImapTaskType type,std::function<void(QVariant,QString)>handler = NULL);
    QString cmd;
    QString rawResult;
    QVariant result;
    std::function<void(QVariant,QString)>handler;
    ImapTaskType type = ImapTaskType::Connect;
    void execute();
};

#endif // IMAPTASK_H
